package com.tool.xmltool.entry;

import cn.hutool.core.collection.CollUtil;
import lombok.Data;

import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

/**
 * xml配置表
 *
 * @author zhoubin
 */
@Data
public class ComXmlConfigDO {
    /**
     * ID
     */
    private Long id;

    /**
     * 报文类型
     */
    private String msgType;

    /**
     * 业务语义
     */
    private String businessSemantics;

    /**
     * 节点路径
     */
    private String nodePath;

    /**
     * 父节点语义
     */
    private String fatherSemantics;

    /**
     * 父节点路径
     */
    private String fatherPath;

    /**
     * 节点注释
     */
    private String nodeNotes;

    /**
     * 节点顺序
     */
    private Integer nodeOrder;

    /**
     * 循环域标识
     */
    private Boolean cyclicFieldFlag;

    /**
     * 签名标识
     */
    private Boolean signFlag;

    /**
     * 属性标识
     */
    private Integer attributeFlag;

    /**
     * 正则表达式
     */
    private String regex;

    /**
     * 创建人
     */
    private String createBy;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新人
     */
    private String updateBy;

    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 循环域
     */
    private List<ComXmlConfigDO> appendList;

    /**
     * 附加域（保存循环域内容）
     * 键为xml路径，值为TComXmlConfigDO
     */
    private Map<String, ComXmlConfigDO> append;


    /**
     * 在数据库查出循环域时保存循环域list时就将附加域给保存进去
     * @param appendList
     */
    public void setAppendList(List<ComXmlConfigDO> appendList) {

        if (CollUtil.isEmpty(appendList)) {
            return;
        }

        append = new LinkedHashMap<>();

        for (int i = 0; i < appendList.size(); i++) {
            ComXmlConfigDO appendDo = appendList.get(i);
            append.put(appendDo.getNodePath(), appendDo);
        }

        this.appendList = appendList;
    }
}